﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using DevExpress.XtraEditors;

namespace GUI.mngsys
{
    using DAL.Entities;
    using BLL;
    using EXT;
    using mngsys.Chitietmnsys;

    public partial class frmNhanvien : Form
    {
        bool AorU;
        public frmNhanvien(bool AorU)
        {
            this.AorU = AorU;
            InitializeComponent();
        }

        NhanvienBLL Nhanvien_BLL = new NhanvienBLL();
        #region Hàm
        void Load_Nhomnguoidung()
        {
            var Danhmuc_BLL = new DanhmucBLL();
            var dt = Danhmuc_BLL.Danhmuc_Select_By_Kind_All_Vali("Nhomnguoidung");
            if (dt!=null)
            {
                if (dt.Rows.Count > 0)
                {
                    gleNhomnguoidung.Properties.DataSource = dt;
                }
                else gleNhomnguoidung.Properties.DataSource = null;
            }
        }

        bool ValiInput()
        {
            if (gleNhomnguoidung.EditValue==null)
            {
                XtraMessageBox.Show("Chưa chọn nhóm nhân viên\n\nVui lòng chọn nhóm nhân viên", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                gleNhomnguoidung.Focus();
                return false;
            }

            if (txtMa.Text.Trim()=="")
            {
                XtraMessageBox.Show("Chưa nhập mã nhân viên\n\nVui lòng nhập mã nhân viên", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                txtMa.Focus();
                return false;
            }

            //if (Nhanvien_BLL.IsExists(txtMa.EditValue.ToString().Trim()) && frmChitietNhanvien.CorE) //Nếu sữa thì khỏi pải chạy xuốn DB chesk
            if (frmChitietNhanvien.CorE)
            {
                if (Nhanvien_BLL.IsExists(txtMa.EditValue.ToString().Trim()))
                {
                    XtraMessageBox.Show("Mã nhân viên đã tồn tại\n\nVui lòng nhập mã nhân viên khác", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    txtMa.Focus();
                    return false;
                }
            }

            if (txtTen.Text.Trim()=="")
	        {
                XtraMessageBox.Show("Chưa nhập tên nhân viên\n\nVui lòng nhập nhập tên nhân viên", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                txtTen.Focus();
                return false;
	        }

            return true;
        }

        void ResetInput()
        {
            gleNhomnguoidung.EditValue = null;
            txtMa.EditValue = null;
            txtTen.EditValue = null;
            txtDiachi.EditValue = null;
            txtDienthoai.EditValue = null;
            dptNgaysinh.EditValue = null;
            dptNgayvaolam.EditValue = null;
            radGioitinh.EditValue = null;
            radHonnhan.EditValue = null;
            txtGhichu.EditValue = null;
        }

        void BindingData()
        {
            gleNhomnguoidung.EditValue = mngsys.Chitietmnsys.frmChitietNhanvien.DrNV["Id_Nhomnguoidung"].GetGuid();
            txtMa.EditValue = frmChitietNhanvien.DrNV["Ma"].ToString();
            txtTen.EditValue = frmChitietNhanvien.DrNV["Ten"].ToString();
            txtDiachi.EditValue = frmChitietNhanvien.DrNV["Diachi"].ToString();
            txtDienthoai.EditValue = frmChitietNhanvien.DrNV["Dienthoai"].ToString();
            dptNgaysinh.EditValue = frmChitietNhanvien.DrNV["Ngaysinh"].ToString();
            dptNgayvaolam.EditValue = frmChitietNhanvien.DrNV["Ngayvaolam"].ToString();
            radGioitinh.EditValue = frmChitietNhanvien.DrNV["Gioitinh"].ToString();
            radHonnhan.EditValue = frmChitietNhanvien.DrNV["Honnhan"].ToString();
            txtGhichu.EditValue = frmChitietNhanvien.DrNV["Ghichu"].ToString();
        }
        #endregion
        private void frmNhanvien_Load(object sender, EventArgs e)
        {
            Load_Nhomnguoidung();
            if (this.AorU)
            {
                btnDoimatkhau.Visible = false;
                if (Chitietmnsys.frmChitietNhanvien.CorE)
                {
                    this.Text = "Thêm nhân viên";
                }
                else
                {
                    BindingData();
                    this.Text = "Sữa thông tin nhân viên";
                    txtMa.Properties.ReadOnly = true;
                }
            }
            else
            {
                this.Text = "Thông tin cá nhân";
            }
        }

        public event MyEvent_LoadData MyEvent_LoadData_Danhsach = null;

        /// <summary>
        /// Tạo mới thì ok hết, chỉ có update thì ko tác động đến Mã, Pass
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnLuu_Click(object sender, EventArgs e)
        {
            if (ValiInput())
            {
                var o = new Nhanvien();

                if (frmChitietNhanvien.CorE)
                {
                    o.Id = Guid.NewGuid();
                }
                else o.Id = frmChitietNhanvien.DrNV["Id"].GetGuid();

                o.Id_Nhomnguoidung = gleNhomnguoidung.EditValue.GetGuid();

                if (frmChitietNhanvien.CorE)
                {
                    o.Ma = txtMa.EditValue.ToString().ToUpper();
                }

                o.Ten = txtTen.EditValue.ToString().ToUpperWords();

                if (txtDiachi.EditValue != null)
                {
                    o.Diachi = txtDiachi.EditValue.ToString().ToUpperWords();
                }
                    
                if (txtDienthoai.EditValue != null)
                {
                    o.Dienthoai = txtDienthoai.EditValue.ToString();
                }
                  
                if (radGioitinh.EditValue != null)
                {
                    o.Gioitinh = radGioitinh.EditValue.ToString();
                }
                 
                if (dptNgaysinh.EditValue != null)
                {
                    o.Ngaysinh = dptNgaysinh.EditValue.ToDateTime();
                }
                else o.Ngaysinh = DateTime.Now;

                if (dptNgayvaolam.EditValue != null)
                {
                    o.Ngayvaolam = dptNgayvaolam.EditValue.ToDateTime();
                }
                else o.Ngayvaolam = DateTime.Now;
                  
                if (radHonnhan.EditValue != null)
                {
                    o.Honnhan = radHonnhan.EditValue.ToString();
                }
                else o.Ngayvaolam = DateTime.Now;
  
                if (txtGhichu.EditValue != null)
                {
                    o.Ghichu = txtGhichu.EditValue.ToString().ToUpperFirst();
                }
                 
                o.Show = true;

                if (mngsys.Chitietmnsys.frmChitietNhanvien.CorE)
                {
                    o.Pass = txtMa.EditValue.ToString().MaHoaMD5();
                }

                if (mngsys.Chitietmnsys.frmChitietNhanvien.CorE)
                {
                    if (Nhanvien_BLL.Nhanvien_Insert(o))
                    {
                        XtraMessageBox.Show("Thêm nhân viên thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        if (MyEvent_LoadData_Danhsach != null)
                        {
                            MyEvent_LoadData_Danhsach(this, new ELoadData() { IsLoadData = true });
                        }
                        ResetInput();
                        btnDong.Focus();
                    }
                    else
                    {
                        XtraMessageBox.Show("Không thể kế nối đến CSDL\n\n Vui lòng kiểm tra kết nối đến CSDL", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        gleNhomnguoidung.Focus();
                    }
                }
                else
                {
                    if (Nhanvien_BLL.Nhanvien_Update(o))
                    {
                        XtraMessageBox.Show("Cập nhật thông tin nhân viên thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        if (MyEvent_LoadData_Danhsach != null)
                        {
                            MyEvent_LoadData_Danhsach(this, new ELoadData() { IsLoadData = true });
                        }
                        this.Close();
                    }
                    else
                    {
                        XtraMessageBox.Show("Không thể kế nối đến CSDL\n\n Vui lòng kiểm tra kết nối đến CSDL", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        gleNhomnguoidung.Focus();
                    }
                }
            }
        }

        private void gleNhomnguoidung_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
        {
            if (e.Button.Index==1)
            {
                var frm = new GUI.Danhmuc.frmNhomnguoidung();
                frm.MyEvent_LoadData_Chitiet += new MyEvent_LoadData(frm_MyEvent_LoadData_Chitiet);
                frm.ShowDialog();
            }
        }

        void frm_MyEvent_LoadData_Chitiet(object sender, ELoadData e)
        {
            if (e.IsLoadData)
            {
                Load_Nhomnguoidung();
            }
        }

        private void btnDong_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnDoimatkhau_Click(object sender, EventArgs e)
        {
            mngsys.frmDoimatkhau frm = new frmDoimatkhau();
            frm.ShowDialog();
        }
    }
}
